return {
    -- bufferline
    {
        "akinsho/bufferline.nvim",
        version = "*",
        dependencies = 'nvim-tree/nvim-web-devicons',
        enabled = true,
        opts = {
            vim.keymap.set({ 'n', 't' }, '<leader>bp', '<CMD>:BufferLineCyclePrev<CR>'),
            vim.keymap.set({ 'n', 't' }, '<leader>bn', '<CMD>:BufferLineCycleNext<CR>'),
            vim.keymap.set({ 'n', 't' }, '<leader>bP', '<CMD>:BufferLinePick<CR>'),
        },
    },

    -- lualine
    {
        "nvim-lualine/lualine.nvim",
        dependencies = { 'nvim-tree/nvim-web-devicons', opt = true },
        config = function()
            require('lualine').setup {
                sections = {
                    lualine_c = {
                        { 'filename', path = 2 } -- 设置 path = 1 显示相对路径，path = 2 显示绝对路径
                    },
                },
            }
        end
    },

    -- illuminate 
    -- 这个插件会导致打开大文件卡住，可以不用
    -- {
    --     "RRethy/vim-illuminate",
    --     config = function()
    --         -- default configuration
    --         require('illuminate').configure({
    --             -- providers: provider used to get references in the buffer, ordered by priority
    --             providers = {
    --                 'lsp',
    --                 'treesitter',
    --                 'regex',
    --             },
    --             -- delay: delay in milliseconds
    --             delay = 100,
    --             -- filetype_overrides: filetype specific overrides.
    --             -- The keys are strings to represent the filetype while the values are tables that
    --             -- supports the same keys passed to .configure except for filetypes_denylist and filetypes_allowlist
    --             filetype_overrides = {},
    --             -- filetypes_denylist: filetypes to not illuminate, this overrides filetypes_allowlist
    --             filetypes_denylist = {
    --                 'dirbuf',
    --                 'dirvish',
    --                 'fugitive',
    --             },
    --             -- filetypes_allowlist: filetypes to illuminate, this is overridden by filetypes_denylist
    --             -- You must set filetypes_denylist = {} to override the defaults to allow filetypes_allowlist to take effect
    --             filetypes_allowlist = {},
    --             -- modes_denylist: modes to not illuminate, this overrides modes_allowlist
    --             -- See `:help mode()` for possible values
    --             modes_denylist = {},
    --             -- modes_allowlist: modes to illuminate, this is overridden by modes_denylist
    --             -- See `:help mode()` for possible values
    --             modes_allowlist = {},
    --             -- providers_regex_syntax_denylist: syntax to not illuminate, this overrides providers_regex_syntax_allowlist
    --             -- Only applies to the 'regex' provider
    --             -- Use :echom synIDattr(synIDtrans(synID(line('.'), col('.'), 1)), 'name')
    --             providers_regex_syntax_denylist = {},
    --             -- providers_regex_syntax_allowlist: syntax to illuminate, this is overridden by providers_regex_syntax_denylist
    --             -- Only applies to the 'regex' provider
    --             -- Use :echom synIDattr(synIDtrans(synID(line('.'), col('.'), 1)), 'name')
    --             providers_regex_syntax_allowlist = {},
    --             -- under_cursor: whether or not to illuminate under the cursor
    --             under_cursor = true,
    --             -- large_file_cutoff: number of lines at which to use large_file_config
    --             -- The `under_cursor` option is disabled when this cutoff is hit
    --             large_file_cutoff = nil,
    --             -- large_file_config: config to use for large files (based on large_file_cutoff).
    --             -- Supports the same keys passed to .configure
    --             -- If nil, vim-illuminate will be disabled for large files.
    --             large_file_overrides = nil,
    --             -- min_count_to_highlight: minimum number of matches required to perform highlighting
    --             min_count_to_highlight = 1,
    --             -- should_enable: a callback that overrides all other settings to
    --             -- enable/disable illumination. This will be called a lot so don't do
    --             -- anything expensive in it.
    --             should_enable = function(bufnr) return true end,
    --             -- case_insensitive_regex: sets regex case sensitivity
    --             case_insensitive_regex = false,
    --         })
    --     end
    -- },
    -- Move faster with unique f/F indicators for each word on the line.
    {
        'jinh0/eyeliner.nvim',
        config = function()
            require 'eyeliner'.setup {
                highlight_on_key = true,
                dim = true
            }
        end
    },

    -- Vim-cool disables search highlighting when you are done searching and re-enables it when you search again.
    {
        'romainl/vim-cool'
    },
}
